#ifndef COM_RS232_H
#define COM_RS232_H

#include "qextserialenumerator.h"
#include "qextserialport.h"
#include "topo_info.h"
#include <QObject>
#include <QThread>
#include <QTimer>

class rs232com : public QObject
{
	Q_OBJECT
public:
    explicit rs232com(QString com, QObject* parent = nullptr);

    int node_id;
    QString mac_id;
    QString com_name;

public:
	bool openPort(QString portName, BaudRateType BaudRate, DataBitsType DataBit, ParityType Parity, StopBitsType StopBit);
	void close_port();

    bool read_com_data();

    //寄存器  0

    /* 寄存器  5
     *
     * 寄存器  4
 *  24-31  NODE ID
 * 16-23   PHY_ID冬
 *  8 15  PHY数量，节点数量，TARGET_NODE_ID
 *  0-7 记录数量，TARGET_PHY_ID
 * */
    //2 表示读取某个node的某个phy的某个节点的信息，返回节点id和phy id
    void query_node_phy_target(int node_id, int phy_id);  //5 2
    //1 表示读取某个node的某个phy对应节点信息，返回节点数量和记录数量
    void query_node_phy_info(int node_id, int phy_id);  //5 1
    // 0 表示读取某个node有几个phy，返回数量
    int query_node_phy_count(int node_id); //5 0
    void query_node_online();    //80 ~~ 88

    int  query_node_count();        //0

    //寄存器  1 2
    QString query_mac_address();
     //寄存器  3
    TOPO_NODE *  query_current_node_info();


    QString query_gpio(int reg_id);



    void set_mac_address(QString);

    QByteArray set_gpio(int reg_id, QString  new_gpio);      //10 ~25

	QextSerialPort* myCom;
private:
    QByteArray m_dataCom;

	QStringList SendDataList;//转发数据链表

	// QTimer* myReadTimer;//定时读取串口数据
	// QTimer* mySendTimer;//定时发送串口数据

private slots:

	//  void slotReadData();


};


#endif // COM_RS232_H
